+++ /dev/null
-#!/usr/bin/rdmd
-
-import std.stdio;
-import std.file;
-import std.process;
-import std.regex;
-import std.array;
-import std.algorithm;
-
-void main(string[] args) {
- string out_file = args[1];
- string[] in_files = args[3..$];
-
- auto regex = ctRegex!("g[td]k_[a-zA-Z0-9_]*_get_type");
-
- string[] funcs;
-
- foreach (filename; in_files) {
- auto file = File(filename);
- foreach (line; file.byLine()) {
- auto match = line.matchFirst(regex);
- if (!match.empty) {
- // *cough*, not exactly the fastest way to do this...
- if (!funcs.canFind(match.hit))
- funcs ~= cast(string)match.hit.idup;
- }
- }
- }
-
- funcs.sort();
-
- //writeln(funcs);
- //writeln(funcs.length);
-
- string file_output = "G_GNUC_BEGIN_IGNORE_DEPRECATIONS\n";
- foreach (func; funcs) {
- if (func.startsWith("gdk_x11") || func.startsWith("gtk_socket") || func.startsWith("gtk_plug")) {
- file_output ~= "#ifdef GDK_WINDOWING_X11\n*tp++ = " ~ func ~ "();\n#endif\n";
- } else if (func != ("gtk_text_handle_get_type")){
- file_output ~= "*tp++ = " ~ func ~ "();\n";
- }
- }
-
- std.file.write(out_file, file_output);
-}
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import sys
+import re
+import os
+
+debug = os.getenv('GTK_GENTYPEFUNCS_DEBUG') is not None
+
+out_file = sys.argv[1]
+in_files = sys.argv[2:]
+
+funcs = []
+
+
+if debug: print 'Output file: ', out_file
+
+if debug: print len(in_files), 'input files'
+
+for filename in in_files:
+ if debug: print 'Input file: ', filename
+ with open(filename, "r") as f:
+ for line in f:
+ line = line.rstrip('\n').rstrip('\r')
+ # print line
+ match = re.search(r'\bg[td]k_[a-zA-Z0-9_]*_get_type\b', line)
+ if match:
+ func = match.group(0)
+ if not func in funcs:
+ funcs.append(func)
+ if debug: print 'Found', func
+
+file_output = 'G_GNUC_BEGIN_IGNORE_DEPRECATIONS\n'
+
+funcs = sorted(funcs)
+
+for f in funcs:
+ if f.startswith('gdk_x11') or f.startswith('gtk_socket') or f.startswith('gtk_plug'):
+ file_output += '#ifdef GDK_WINDOWING_X11\n'
+ file_output += '*tp++ = {0}();\n'.format(f)
+ file_output += '#endif\n'
+ else:
+ file_output += '*tp++ = {0}();\n'.format(f)
+
+if debug: print len(funcs), 'functions'
+
+ofile = open(out_file, "w")
+ofile.write(file_output)
+ofile.close()
command : [mkenum, perl, glib_mkenums, meson.current_source_dir() + '/gtkprivatetypebuiltins.c.template', '@OUTPUT@', '@INPUT@']
)
-d_compiler = find_program('dmd')
-gentypefuncs_prog = find_program('gentypefuncs.d')
+gentypefuncs_prog = find_program('gentypefuncs.py')
# Generate gtktypefuncs.c
typefuncs = custom_target(
'typefuncs',